Hệ thống quản lý phòng khám trực tuyến bằng PHP
1 <?php
2 @set_time_limit(0);
3 $currDir = dirname(__FILE__);
4 require("{$currDir}/incCommon.php");
5 $GLOBALS['page_title'] = $Translation['data ownership assign'];
6 include("{$currDir}/incHeader.php");
7
8 // get a list of tables
9 $arrTables = getTableList();
10 $arrTablesNoOwners = array();
11
12 // get a list of tables with records that have no owners
13 foreach($arrTables as $tn => $tc){
14 $countOwned = sqlValue("select count(1) from membership_userrecords where tableName='{$tn}'");
15 $countAll = sqlValue("select count(1) from `{$tn}`");
16
17 if($countAll > $countOwned){
18 $arrTablesNoOwners[$tn] = ($countAll - $countOwned);
19 }
20 }
21
22 // process ownership request
23 if(count($_POST)){
24 ignore_user_abort();
25 foreach($arrTablesNoOwners as $tn => $tc){
26 $groupID = intval($_POST["ownerGroup_$tn"]);
27 $memberID = makeSafe(strtolower($_POST["ownerMember_$tn"]));
28 $pkf = getPKFieldName($tn);
29
30 if($groupID){
31 $insertBegin = "insert ignore into membership_userrecords (tableName, pkValue, groupID, memberID, dateAdded, dateUpdated) values ";
32 $ts = time();
33 $assigned = 0;
34 $tempStatus = '';
35
36 $res = sql("select `$tn`.`$pkf` from `$tn`", $eo);
37 while($row = db_fetch_row($res)){
38 $pkValue = makeSafe($row[0], false);
39 $insert .= "('$tn', '$pkValue', '$groupID', ".($memberID ? "'$memberID'" : "NULL").", $ts, $ts),";
40 if(strlen($insert) > 50000){
41 sql($insertBegin . substr($insert, 0, -1), $eo);
42 $assigned += @db_affected_rows(db_link());
43 $insert = '';
44 }
45 }
46 if($insert != ''){
47 sql($insertBegin . substr($insert, 0, -1), $eo);
48 $assigned += @db_affected_rows(db_link());
49 $insert = '';
50 }
51
52 if ($memberID){
53 $tempStatus = $Translation["assigned table records to group and member"];
54 $tempStatus = str_replace ( "<MEMBERID>" , $memberID , $tempStatus );
55 }else{
56 $tempStatus = $Translation["assigned table records to group"];
57 }
58
59 $originalValues = array ('<NUMBER>','<TABLE>' , '<GROUP>' );
60 $number = number_format($assigned);
61 $group = sqlValue("select name from membership_groups where groupID='$groupID'");
62 $replaceValues = array ( $number , $tn , $group );
63 $tempStatus = str_replace ( $originalValues , $replaceValues , $tempStatus );
64
65 $status.= $tempStatus. ".<br>";
66 }
67 }
68
69 // refresh the list of tables with records that have no owners
70 unset($arrTablesNoOwners);
71 foreach($arrTables as $tn=>$tc){
72 $countOwned=sqlValue("select count(1) from membership_userrecords where tableName='$tn'");
73 $countAll=sqlValue("select count(1) from `$tn`");
74
75 if($countAll>$countOwned){
76 $arrTablesNoOwners[$tn]=($countAll-$countOwned);
77 }
78 }
79
80 }
81
82 ?>
83
84 <div class="page-header"><h1><?php echo $Translation['data ownership assign']; ?></h1></div>
85
86 <?php
87
88 // if all records of all tables have owners, no need to continue
89 if(!is_array($arrTablesNoOwners)){
90 echo "<div class=\"alert alert-success\"><i class=\"glyphicon glyphicon-ok\"></i> {$Translation['records ownership done']}</div>";
91 include("$currDir/incFooter.php");
92 exit;
93 }
94
95 // show status of previous assignments
96 if($status!=''){
97 echo"<div class=\"alert alert-danger\">$status</div>";
98 }
99
100 // compose groups drop-down
101 $htmlGroups="<option value=\"0\">--- {$Translation['select group']} ---</option>";
102 $res=sql("select groupID, name from membership_groups order by name", $eo);
103 while($row=db_fetch_row($res)){
104 $htmlGroups.="<option value=\"$row[0]\">$row[1]</option>";
105 }
106 $htmlGroups.="</select>";
107 ?>
108
109 <script>
110 var members=new Array();
111 <?php
112 $res=sql("select groupID, lcase(memberID) from membership_users order by groupID, memberID", $eo);
113 while($row=db_fetch_row($res)){
114 $members[$row[0]].="'".$row[1]."',";
115 }
116
117 foreach($members as $groupID=>$members){
118 echo "\n\tmembers[$groupID]=[".substr($members, 0, -1)."];";
119 }
120 ?>
121
122 function populateMembers(memberSelect, groupSelect){
123 var m=document.getElementsByName(memberSelect)[0];
124 var g=document.getElementsByName(groupSelect)[0];
125
126 if(m.options.length>0){
127 var mc=m.options.length;
128 for(var i=0; i<mc; i++){
129 m.options[0]=null;
130 }
131 }
132
133 var gval=g.options[g.selectedIndex].value;
134
135 if(gval==0 || members[gval] == undefined){
136 return 0;
137 }
138
139 for(var j=0; j<members[gval].length; j++){
140 m.options[j]=new Option(members[gval][j], members[gval][j], false, false);
141 }
142
143 return 0;
144 }
145 </script>
146
147 <form method="post" action="pageAssignOwners.php">
148 <p>
149 <?php echo $Translation['data ownership'] ; ?>
150 </p>
151
152 <div class="table-responsive"><table class="table">
153 <thead><tr>
154 <th><?php echo $Translation["table"] ; ?></th>
155 <th><?php echo $Translation["records with no owners"] ; ?></th>
156 <th><?php echo $Translation["new owner group"] ; ?></th>
157 <th><?php echo $Translation["new owner member"] ; ?></th>
158 </tr></thead>
159
160 <tbody>
161 <?php
162 foreach($arrTablesNoOwners as $tn=>$countNoOwners){
163 ?>
164 <tr>
165 <td><?php echo $arrTables[$tn]; ?></td>
166 <td align="right"><?php echo number_format($countNoOwners); ?> </td>
167 <td><select onchange="populateMembers('ownerMember_<?php echo $tn; ?>', 'ownerGroup_<?php echo $tn; ?>');" name="ownerGroup_<?php echo $tn; ?>"><?php echo $htmlGroups; ?></td>
168 <td><select style="width: 120px;" name="ownerMember_<?php echo $tn; ?>"></select></td>
169 </tr>
170 <?php
171 }
172 ?>
173 <tr><td colspan="4" class="text-center">
174 <input type="button" value="<?php echo $Translation['cancel'] ; ?>" onclick="window.location='pageHome.php';">
175 <input type="button" name="assignOwners" value="<?php echo $Translation["assign new owners"] ; ?>" onclick="this.value='<?php echo $Translation["please wait"] ; ?>'; this.onclick='return FALSE;'; this.disabled=true; document.getElementsByTagName('form')[0].submit();">
176 </td></tr>
177 </tbody>
178 </table></div>
179
180 <p><?php echo $Translation["if no owner member assigned"] ; ?></p>
181 </form>
182
183 <?php
184 include("$currDir/incFooter.php");
185 ?>